本文 Tags:进程 脚本 命令 状态 清单
没有终端的作业 在实践中,可能希望让后台进程的标准 IO 流重定向到文件或者来自文件。有另一个相关问题;如果控制终端关闭了或用户注销了,那么进程会怎么样?答案取决于使用的 shell。如果 shell 发送 SIGHUP(或 hangup)信号,那么应用程序可能关闭。我们稍后讨论信号,但是目前考虑解决这个问题的另一种方式。 nohup nohup 命令用于启动一个命令,它将忽略 hangup 信号并将 stdout 和 stderr 附加到文件。默认文件是 nohup.out 或 $HOME/nohup.out。如果文件不可写,那么命令将不运行。如果希望将输出发送到别处,那么对 stdout 或 stderr 进行重定向。 nohup 的另一个特点是,它不执行管道或命令列表。在 对标准 IO 进行重定向 一节中,我们看到了如何将一组命令保存在 shell 脚本中并引用(source)它。可以将管道或列表保存在文件中,然后使用 sh(默认 shell)或 bash 命令运行它,但是不能使用前面示例中使用的 . 或 source 命令。本系列中的下一个教程(针对主题 104,讨论设备、Linux 文件系统和 Filesystem Hierarchy Standard)将解释如何使脚本文件可执行,但是目前只通过引用(source)或者通过使用 sh 或 bash 命令来运行脚本。清单 89 显示如何用脚本运行刚才创建的数字化时钟。但是,将时间写到文件中其实没什么用,而且文件会随着脚本运行而增大,所以将时钟设置为每 30 秒更新一次而不是每秒一次。 清单 89. 使用 nohup 运行脚本中的命令列表
[ian@echidna ian]$ echo "while sleep 30; do date;done">pmc.sh [ian@echidna ian]$ nohup . pmc.sh& [1] 21700 [ian@echidna ian]$ nohup: appending output to `nohup.out' [1]+ Exit 126 nohup . pmc.sh [ian@echidna ian]$ nohup sh pmc.sh& [1] 21709 [ian@echidna ian]$ nohup: appending output to `nohup.out' [ian@echidna ian]$ nohup bash pmc.sh& [2] 21719 [ian@echidna ian]$ nohup: appending output to `nohup.out'
1/6 1 2 3 4 5 6 下一页 尾页 |